在 python 中要將兩個 list 連接起來的方法有很多
以下主要比較用三種方法:__add__, list.extend與itertools.chain後轉list
import time
from itertools import chain
one = list(range(10000))
two = list(range(10000))
def use_add():
    three = one + two
def use_extend():
    three = one.copy()
    three.extend(two)
def use_chain():
    three = list(chain(one, two))
start_time = time.time()
for _ in range(10000):
    use_add()
time.time() - start_time
Time: 0.9798197746276855 s
start_time = time.time()
for _ in range(10000):
    use_extend()
time.time() - start_time
Time: 0.9656569957733154 s
start_time = time.time()
for _ in range(10000):
    use_chain()
time.time() - start_time
Time: 2.501063823699951 s
__add__ 與 extend 幾乎一樣,到collections裡面找實做的方法,發現__add__基本上是直接呼叫extend,所以時間上自然幾乎一樣:
class MutableSequence(Sequence):
    pass
    
    def __iadd__(self, values):
        self.extend(values)
        return self
至於chain 比另外兩者慢了快2.5倍,原因可能是 chain 完後是生成迭代器,透過list將迭代器再轉換成list的時候需要在對每個元素檢查一次,所以用了更多時間。
不知道這樣的測試是否正確,希望大家可以多給我些意見
還有最基本的方式,你沒測喔.
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
謝謝補充